<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <style>
        * {
            padding: 0;
            margin: 0;
            box-sizing: border-box;
        }

        body {
            text-align: center;
        }

        .gearbox {
            margin-top: 50px;
            min-width: 335px;
            overflow: hidden;
            padding: 10px;
            display: inline-block;
            transform: rotateZ(45deg) scale(.5);
            /* border: 2px solid #cccccc; */
        }

        .gearbox > div {
            position: relative;
            float: left;
            border: 5px solid #666666;
            animation-play-state: paused;
            animation-iteration-count: infinite;
            animation-timing-function: linear;
        }

        .gearbox:hover > div {
            animation-play-state: running;
        }

        .small {
            top: 50px;
            height: 100px;
            width: 100px;
            border-radius: 50px;
            animation-name: left;
            animation-duration: 3s;
        }

        .big {
            margin-left: 10px;
            height: 200px;
            width: 200px;
            border-radius: 100px;
            animation-name: right;
            animation-duration: 6s;
        }

        .scenter {
            position: absolute;
            height: 20px;
            width: 20px;
            left: 35px;
            top: 35px;
            background-color: #666666;
            border-radius: 10px;
        }

        .bcenter {
            position: absolute;
            height: 40px;
            width: 40px;
            left: 75px;
            top: 75px;
            background-color: #666666;
            border-radius: 20px;
        }

        @keyframes left {
            0% {
                transform: rotate(0deg);
            }

            100% {
                transform: rotate(360deg);
            }
        }

        @keyframes right {
            0% {
                transform: rotate(0deg);
            }

            100% {
                transform: rotate(-360deg);
            }
        }

        .snode,
        .bnode {
            position: absolute;
            height: 10px;
            width: 16px;
            background-color: #666666;
            border-radius: 8px 8px 0 0;
        }

        .snode {
            left: 37px;
            transform-origin: 8px 60px;
            top: -15px;
        }

        .snode:nth-child(1) {
            transform: rotateZ(36deg);
        }

        .snode:nth-child(2) {
            transform: rotateZ(72deg);
        }

        .snode:nth-child(3) {
            transform: rotateZ(108deg);
        }

        .snode:nth-child(4) {
            transform: rotateZ(144deg);
        }

        .snode:nth-child(5) {
            transform: rotateZ(180deg);
        }

        .snode:nth-child(6) {
            transform: rotateZ(-36deg);
        }

        .snode:nth-child(7) {
            transform: rotateZ(-72deg);
        }

        .snode:nth-child(8) {
            transform: rotateZ(-108deg);
        }

        .snode:nth-child(9) {
            transform: rotateZ(-144deg);
        }

        .bnode {
            left: 87px;
            transform-origin: 8px 109px;
            top: -14px;
        }

        .bnode:nth-child(1) {
            transform: rotateZ(18deg);
        }

        .bnode:nth-child(2) {
            transform: rotateZ(36deg);
        }

        .bnode:nth-child(3) {
            transform: rotateZ(54deg);
        }

        .bnode:nth-child(4) {
            transform: rotateZ(72deg);
        }

        .bnode:nth-child(5) {
            transform: rotateZ(90deg);
        }

        .bnode:nth-child(6) {
            transform: rotateZ(108deg);
        }

        .bnode:nth-child(7) {
            transform: rotateZ(126deg);
        }

        .bnode:nth-child(8) {
            transform: rotateZ(144deg);
        }

        .bnode:nth-child(9) {
            transform: rotateZ(162deg);
        }

        .bnode:nth-child(10) {
            transform: rotateZ(180deg);
        }

        .bnode:nth-child(11) {
            transform: rotateZ(-18deg);
        }

        .bnode:nth-child(12) {
            transform: rotateZ(-36deg);
        }

        .bnode:nth-child(13) {
            transform: rotateZ(-54deg);
        }

        .bnode:nth-child(14) {
            transform: rotateZ(-72deg);
        }

        .bnode:nth-child(15) {
            transform: rotateZ(-90deg);
        }

        .bnode:nth-child(16) {
            transform: rotateZ(-108deg);
        }

        .bnode:nth-child(17) {
            transform: rotateZ(-126deg);
        }

        .bnode:nth-child(18) {
            transform: rotateZ(-144deg);
        }

        .bnode:nth-child(19) {
            transform: rotateZ(-162deg);
        }
    </style>
</head>

<body>
<div class="gearbox">
    <div class="small">
        <div class="snode"></div>
        <div class="snode"></div>
        <div class="snode"></div>
        <div class="snode"></div>
        <div class="snode"></div>
        <div class="snode"></div>
        <div class="snode"></div>
        <div class="snode"></div>
        <div class="snode"></div>
        <div class="snode"></div>
        <div class="scenter"></div>
    </div>
    <div class="big">
        <div class="bnode"></div>
        <div class="bnode"></div>
        <div class="bnode"></div>
        <div class="bnode"></div>
        <div class="bnode"></div>
        <div class="bnode"></div>
        <div class="bnode"></div>
        <div class="bnode"></div>
        <div class="bnode"></div>
        <div class="bnode"></div>
        <div class="bnode"></div>
        <div class="bnode"></div>
        <div class="bnode"></div>
        <div class="bnode"></div>
        <div class="bnode"></div>
        <div class="bnode"></div>
        <div class="bnode"></div>
        <div class="bnode"></div>
        <div class="bnode"></div>
        <div class="bnode"></div>
        <div class="bcenter"></div>
    </div>
</div>
</body>

</html>